home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Wonky Flux Batch 2019 02
/
Wonky_Flux_Batch_2019-02.zip
/
Wonky Flux Batch 2019-02
/
093 - Land of Spur.dsk
/
SPUR.SYSOP.S
< prev
next >
Wrap
Text File
|
2019-02-17
|
26KB
|
877 lines
; _ _ _ _ _ _ _ _
;[_][_][_][_][_][_][_][_]
;
; The Land of SPUR
;
; (C)opyright 1987
; Greg W. Davis
; and
; Peripherals Plus
;
; 03/14/87 23:14
; _______________________
; v3.0
; Sysop Segment
; _ _ _ _ _ _ _ _
;[_][_][_][_][_][_][_][_]
on nocar goto linkterm
public relink
main
input \"SPUR Sysop (?=Menu): "i$
push main
if i$="A" goto allie0
if i$="I" goto item0
if i$="M" goto monster0
if i$="W" goto weapon0
if i$="S" goto spell0
if i$="F" goto food0
if i$="P" goto player0
if i$="L" pop:goto levels
if i$="R" pop:goto room0
if i$="D" goto log
if i$="Q" goto quit
if i$="U" pop:dy$=ds$+"spur.util":link dy$
if i$="*" pop:dy$=ds$+"spur.control":link dy$
if i$<>"?" return
menu
setint(1):print \s$\'
[------------------------------------]
[ Sysop Maintenance Menu ]
[------------------------------------]
[ [D] Display SPUR Log ]
[ [U] Spur Sysop Utilities ]
[ [*] Spur Sysop Control ]
[ ]
[ [P]layers [S]pells ]
[ [I]tems [M]onsters ]
[ [W]eapons [A]llies ]
[ [L]evels [F]ood/Drink ]
[ [R]ooms [Q]uit ]
[ ]
[------------------------------------]':setint(""):return
player0
dy$=dx$+"spur.users"
players
print \"[ PLAYERS ]"
input \"[L]ist [E]dit [K]ill or [Q]uit: "i$
if i$="K" goto player2
if i$="Q" return
if i$="L" xl$="listplyr":gosub link.sys
if i$<>"E" goto players
player2
input @2\"Player # (CR=Abort): "x$:if x$="" goto players
x=val(x$):if (x<1) or (x>np) print \"Players from 1 to "np" only.":goto player2
if i$="K" goto kil.plyr
ed.plr
if x=pn gosub pull:goto ed.plr1
gosub rd.plr
if not b1 print \"No such Player.":goto players
ed.plr1
print \"User #"b1" Player #"b2" Name: "n$
print "A:Strength :"n1
print "B:Constitution :"n2
print "C:Intelligence :"n3
print "D:Energy :"n4
print "E:Wisdom :"n5
print "F:Dexterity :"n6
print "G:Shield :"s
print "H:Armor :"a
g1=g5:g2=g6:gosub prt.gold:print "I:Gold in bank :"gd$
g1=g3:g2=g4:gosub prt.gold:print "J:Gold in hand :"gd$
print "K:Experience :"m1
print "L:Player Level :"m4
print "M:Kills :"m2
print "N:Hit Points :"b3\
ed.plr2
input @2\"Edit (A-N): " i$
ed.cont
if i$="A" input @1\"Strength: "a$:gosub check:n1=i
if i$="B" input @1\"Constitution: "a$:gosub check:n2=i
if i$="C" input @1\"Intelligence: "a$:gosub check:n3=i
if i$="D" input @1\"Energy: "a$:gosub check:n4=i
if i$="E" input @1\"Wisdom: "a$:gosub check:n5=i
if i$="F" input @1\"Dexterity: "a$:gosub check:n6=i
if i$="G" input @1\"Shield: "a$:gosub check2:s=i
if i$="H" input @1\"Armor: "a$:gosub check2:a=i
if i$="I" input @1\"Gold in Bank: "a$:gosub check4
if i$="J" input @1\"Gold in Hand: "a$:gosub check4
if i$="K" input @1\"Experience: "m1
if i$="L" input @1\"Player Level: "m4
if i$="M" input @1\"Kills: "m2
if i$="N" input @1\"Hit Points: "a$:gosub check5:b3=i
if i$<>"" goto ed.plr1
play.sav
input @0\"[S]ave [R]eturn [A]bort: "i$
if i$="A" goto players
if i$="R" goto ed.plr1
if i$<>"S" goto play.sav
if x<>pn gosub wr.plr:goto players
hp=b3:n1$=n$:ps=n1:pt=n2:pi=n3:pe=n4:pw=n5:pd=n6
sh=s:ar=a:gh=g3:gl=g4:bh=g5:bl=g6:ep=m1:mk=m2:mm=m3:xp=m4:goto players
check
i=val(a$):if (i<1) or (i>25) print \"25 pts. max.":pop:goto ed.cont
return
check2
i=val(a$):if (i<0) or (i>100) print \"100 pts. max.":pop:goto ed.cont
return
check4
if len(a$)>9 print \"Invalid amount":pop:goto ed.cont
for i=1 to len(a$):b=instr(mid$(a$,i,1),"0123456789")
if b=0 then i=len(a$):print \"Invalid amount":next:pop:goto ed.cont
next
if i$="I" then gd$=a$:gosub spl.gold:g5=g1:g6=g2
if i$="J" then gd$=a$:gosub spl.gold:g3=g1:g4=g2
return
check5
i=val(a$):if (i<1) or (i>25) print \"25 pts. max.":pop:goto ed.cont
return
pull
b1=sn:b2=pn:b3=hp:n$=n1$:n1=ps:n2=pt:n3=pi:n4=pe:n5=pw:n6=pd
s=sh:a=ar:g3=gh:g4=gl:g5=bh:g6=bl:m1=ep:m2=mk:m3=mm:m4=xp:return
rd.plr
open #1,dy$
position #1,130,x
input #1,n$,b1,b2,n7,n8,b3
input #1,n1,n2,n3,n4,n5,n6
input #1,g3,g4,g5,g6,s,a,z1,z2,m1,m2,m3,m4
input #1,p1$
close:return
wr.plr
open #1,dy$
position #1,130,x
print #1,n$,b1,b2,n7,n8,b3
print #1,n1,n2,n3,n4,n5,n6
print #1,g3,g4,g5,g6,s,a,z1,z2,m1,m2,m3,m4
print #1,p1$
close:return
kil.plyr
gosub rd.plr
if not b1 print \"Player does not exist":goto players
print \"Player #"x
print "Name "n$\
input @0 "Remove Player from game? "i$
if i$<>"Y" goto players
b1=0:gosub wr.plr
dy$=dx$+"weapons":dw$=dx$+"spur.weapons"
open #1,dy$:open #2,dw$
position #2,64,x
input #2,a,i$
if a=0 close:goto kill.pl2
for j=1 to a
y=val(i$):i$=mid$(i$,5)
if y>10 position #1,34,y:print #1,"1"
next:close
kill.pl2
dy$=dx$+"allies":dw$=dx$+"spur.allies"
open #1,dy$:open #2,dw$
position #2,78,x
for j=1 to 3
input #2,x1$,x1,x2
position #1,26,x2
if x2<>0 print #1,1
next:close
goto player0
food0
dy$=dx$+"stores":xl$="listfood":xc=cg:xn$="RATIONS":open #1,dy$
food
gosub edpmt
if i$="A" goto nw.food
if (i$<>"E") and (i$<>"K") goto food
push food
gosub getnum:pop
if i$="E" goto ed.food
kl.food
gosub rd.food
print \"Kill "xn$" #"x
print "Named: "gs$;:input @0 "? "i$
if i$<>"Y" goto food
cb$="*" gosub wr.food:goto food
nw.food
print \"Searching...."
x=1
nw.food2
gosub rd.food
if (cb$="") or (cb$="*") goto nw.food3
x=x+1:if x=1000 print \"No room in "xn$" file!":goto food
goto nw.food2
nw.food3
print \"Open slot found at #"x:if x<11 then cb$="2":else cb$="1"
gosub ed.f.nam:if gs$="" goto food.cnc
gosub ed.f.cst
gosub ed.f.typ
goto food.sav
ed.food
gosub rd.food
if (cb$="") or (cb$="*") push food:goto ed.none
ed.food2
print \xn$" # "x
print"A. Name: "gs$
print"B. Cost: "gs
print"C. Type: "ty$"-";
if ty$="F" print "Food"
if ty$="D" print "Drink"
if ty$="C" print "Cursed"
input @2\"Edit (A-C) - [?=Types]: "i$
ed.food3
if i$="A" gosub ed.f.nam:if gs$="" goto ed.food3
if i$="B" gosub ed.f.cst
if i$="C" gosub ed.f.typ
if i$="?" gosub f.types
if i$<>"" goto ed.food2
food.sav
input \"[S]ave [A]bort [R]eturn: "i$
if i$="R" goto ed.food2
if i$="A" goto food
if i$<>"S" goto food.sav
if x>cg then cg=x:xc=x
gosub wr.food:goto food
ed.f.nam
print \xn$ ;:input @2" (18 chrs.): "gs$:if len(gs$)>18 goto ed.f.nam
return
ed.f.cst
print \"Cost of "xn$;:input " (1-99): "gs:if (gs<1) or (gs>99) goto ed.f.cst
return
ed.f.typ
input @0\"Type: "ty$:if ty$="?" gosub f.types:goto ed.f.typ
a=instr(ty$,"FDC"):if (not a) print \"Invalid type":goto ed.f.typ
if (ty$="C") and (x<11) print \"Rations 1-10 can not be Cursed":goto ed.f.typ
return
food.cnc
print \xn$" add cancelled.":goto food
f.types
print \'Valid Ration Types:
F = Food D = Drink C = Cursed':return
rd.food
position #1,26,x
input #1,cb$\gs$\gs
ty$=left$(gs$,1):gs$=mid$(gs$,3)
return
wr.food
gs$=ty$+"."+gs$
position #1,26,x
print #1,cb$\gs$\gs
return
spell0
dy$=dx$+"spells":xl$="listspel":xc=sc:xn$="SPELLS":open #1,dy$
spells
gosub edpmt
if i$="A" goto nw.spel
if (i$<>"E") and (i$<>"K") goto spells
push spells
gosub getnum:pop
if i$="E" goto ed.spel
kil.spel
gosub rd.spel
print \"Kill Spell #"x
print "Named "q$;:input @0 "? "i$
if i$<>"Y" goto spells
cb$="*":gosub wr.spel:goto spells
nw.spel
print \"Searching..."
x=1
nw.spel2
gosub rd.spel
if (cb$="") or (cb$="*") goto nw.spel3
x=x+1:if x=1000 print \"No room in the "xn$" file.":goto spells
goto nw.spel2
nw.spel3
print \"Open slot found at #"x:cb$="1"
gosub ed.s.nam:if q$="" goto spel.cnc
gosub ed.s.typ
gosub ed.s.suc
gosub ed.s.cst
goto spel.sav
ed.spel
gosub rd.spel
if (cb$="") or (cb$="*") push spells:goto ed.none
ed.spel2
print \"Spell # "x
print "A: Name : "q$
print "B: ID : "q2$
print "C: Success : "q3"0%"
print "D: Cost : "q4" gold"\
input @2\"Edit (A-D): "i$
ed.spel3
if i$="A" gosub ed.s.nam:if q$="" goto ed.spel3
if i$="B" gosub ed.spl2b
if i$="C" gosub ed.s.suc
if i$="D" gosub ed.s.cst
if i$<>"" goto ed.spel2
spel.sav
input \"[S]ave [A]bort [R]eturn: "i$
if i$="A" goto spells
if i$="R" goto ed.spel2
if i$<>"S" goto spel.sav
if x>sc then sc=x:xc=x
gosub wr.spel:goto spells
ed.spl2b
input @0\"Type of Spell (?=List): "a$:if a$="?" gosub listtype:goto ed.spl2b
if not instr(a$,"PMSWEICDLTURGA") goto ed.spl2b
ed.spl2c
input \"Point Determinator (1-9): "b$:if (b$<"1") or (b$>"9") goto ed.spl2c
ed.spl2e
q2$=a$+b$:return
listtype
print \'
Spell Types:
(P)layer (M)onster
(S)trength (C)onstitution
(E)nergy (I)ntelligence
(W)isdom (D)exterity
(L)evel-Down (T)ransfer
(U)p-Level (R)eturn to Shop
(G)et SPUR (A)ura'\:return
ed.s.nam
input @2\"Name (20 chrs.): "q$:if len(q$)>20 goto ed.s.nam
return
ed.s.typ
gosub ed.spl2b
return
ed.s.suc
input \"Success (1-9): "q3:if (q3<1) or (q3>9) goto ed.s.suc
return
ed.s.cst
input \"Cost (1-30000): "q4:if (q4<1) or (q4>30000) goto ed.s.cst
return
spel.cnc
print \xn$" add cancelled":goto spells
rd.spel
position #1,40,x
input #1,cb$\q$,q2$,q3,q4
return
wr.spel
position #1,40,x
print #1,cb$\q$,q2$,q3,q4
return
monster0
dy$=dx$+"monsters":xl$="listmons":xc=mc:xn$="MONSTERS":open #1,dy$
monsters
gosub edpmt
if i$="A" goto nw.mons
if (i$<>"E") and (i$<>"K") goto monsters
push monsters
gosub getnum:pop
if i$="E" goto ed.mons
kil.mons
gosub rd.mons
print \"Kill "xn$" #"x
print "Named "m$;:input @0 "? "i$
if i$<>"Y" goto monsters
cb$="*":gosub wr.mons:goto monsters
nw.mons
print \"Searching......"
x=1
nw.mons2
gosub rd.mons
if (cb$="") or (cb$="*") goto nw.mons3
x=x+1:if x=1000 print \"No room for adding "xn$:goto monsters
goto nw.mons2
nw.mons3
print \"Open slot found at #"x:cb$="1"
gosub ed.m.nam:if m$="" goto mons.cnc
gosub ed.m.str
gosub ed.m.swp
goto mons.sav
ed.mons
gosub rd.mons
if (cb$="") or (cb$="*") push monsters:goto ed.none
ed.mons2
print \xn$" # "x
print \"A: Name : "m$
print "B: Strength : "ms
print "C: Spec Wep #: "sw
input @2\"Edit (A-C): "i$
ed.mons3
if i$="A" gosub ed.m.nam:if m$="" goto ed.mons3
if i$="B" gosub ed.m.str
if i$="C" gosub ed.m.swp
if i$<>"" goto ed.mons2
mons.sav
input \"[S]ave [R]eturn [A]bort: "i$
if i$="A" goto monsters
if i$="R" goto ed.mons2
if i$<>"S" goto mons.sav
if x>mc then mc=x:xc=x
gosub wr.mons:goto monsters
ed.m.nam
print \xn$ ;:input @2" (18 chrs.): "m$:if len(m$)>18 goto ed.m.nam
ty$="M"
return
ed.m.str
print \xn$ ;:input @2" strength (1-18): "ms
if (ms<1) or (ms>18) goto ed.m.str
return
ed.m.swp
input @0\ "Special Weapon Required? "i$
if i$<>"Y" then sw=0:return
print \"Special Weapon (1-"wc"): ";:input sw
if (sw<1) or (sw>wc) goto ed.m.swp
return
mons.cnc
print \xn$" add cancelled.":goto monsters
rd.mons
position #1,32,x
input #1,cb$\m$\ms,sw
ty$=left$(m$,1):m$=mid$(m$,3)
return
wr.mons
zz$=rnd$:ma=random(9)
m$=ty$+"."+m$
position #1,32,x
print #1,cb$\m$\ms,sw\ma
return
item0
dy$=dx$+"items":xl$="listitem":xc=ic:xn$="ITEMS":open #1,dy$
items
gosub edpmt
if i$="A" goto nw.item
if (i$<>"E") and (i$<>"K") goto items
push items
gosub getnum:pop
if i$="E" goto ed.item
kil.item
gosub rd.item
print \"Kill "xn$" # "x
print "Named "it$;:input @0 "? "i$
if i$<>"Y" goto items
cb$="*":gosub wr.item:goto items
nw.item
print \"Searching..."
x=1
nw.item2
gosub rd.item
if (cb$="") or (cb$="*") goto nw.item3
x=x+1:if x=1000 print \"No room in "xn$" file.":goto items
goto nw.item2
nw.item3
print \"Open slot found at #"x:cb$="1":if x<6 then cb$="2"
gosub ed.i.nam:if it$="" goto item.cnc
gosub ed.i.typ
gosub ed.i.val
goto item.sav
ed.item
gosub rd.item
if (cb$="") or (cb$="*") push items:goto ed.none
ed.item2
print \"Item # "x
print \"A: Name : "it$
print "B: Type : "ty$"-";
if ty$="T" print "Treasure";
if ty$="C" print "Cursed Item";
if ty$="B" print "Book";
if ty$="A" print "Armor";
if ty$="S" print "Shield";
if ty$="P" print "Compass";
print \"C: Value : "it\
input @2 "Edit (A-C) - [?=Types]: "i$
ed.item3
if i$="A" gosub ed.i.nam:if it$="" goto ed.item3
if i$="B" gosub ed.i.typ
if i$="C" gosub ed.i.val
if i$="?" gosub types
if i$<>"" goto ed.item2
item.sav
if ty$="B" input @0\"Write or Edit book now? "i$:if i$="Y" gosub wr.book
input \"[S]ave [R]eturn [A]bort: "i$
if i$="A" goto items
if i$="R" goto ed.item2
if i$<>"S" goto item.sav
if x>ic then ic=x:xc=x
if (ty$="A") and (not instr("ARMOR",it$)) print \"Word 'ARMOR' must appear in name!":goto ed.item2
if (ty$="S") and (not instr("SHIELD",it$)) print \"Word 'SHIELD' must appear in name!":goto ed.item2
gosub wr.item:goto items
ed.i.nam
print \xn$" name: (20 chrs.): ";:input @2 it$:if len(it$)>20 goto ed.i.nam
if x>5 return
if (x=1) and (not instr("COMPASS",it$)) print \"Item 1 MUST be a COMPASS.":goto ed.i.nam
if x=1 return
if (not instr("ARMOR",it$)) and (not instr("SHIELD",it$)) print \'
Items 2-5 must be either ARMOR
or SHIELD':goto ed.i.nam
return
ed.i.typ
if instr("COMPASS",it$) then ty$="P":return
if instr("ARMOR",it$) then ty$="A":return
if instr("SHIELD",it$) then ty$="S":return
input @0\"Type: "ty$:if ty$="?" gosub types:goto ed.i.typ
a=instr(ty$,"PTCBAS"):if (not a) print \"Invalid type":goto ed.i.typ
return
ed.i.val
print \xn$" value (Max. 9): ";:input it:if (it<1) or (it>9) goto ed.i.val
return
item.cnc
print \xn$" add cancelled.":goto items
return
types
print \'Valid Item Types:
T = Treasure C = Cursed Item
B = Book A = Armor
S = Shield P = Compass':return
wr.book
bk$=dx$+"spur.books":ready bk$
input #msg(x),n$
edit(0):copy #6,#8
if not edit(2) goto wr.book3
wr.book2
print \"Edit book: "n$;:input @0"? "a$:if a$<>"Y" return
wr.book3
print \'
You may edit or write your book now,
4k max. Type [ done ] when finished.'
wr.book4
edit(1)
if edit(2)>3900 print \"Your book is too long, please shorten.":goto wr.book4
if not edit(2) print #8,"[ Un-readable! ]"
print \"Saving book..."
a=msg(x):kill #msg(x):print #msg(x),it$
copy #8,#6
msg(x)=a:update
return
rd.item
position #1,30,x
input #1,cb$\it$\it
ty$=left$(it$,1):it$=mid$(it$,3)
return
wr.item
it$=ty$+"."+it$
position #1,30,x
print #1,cb$\it$\it
return
weapon0
dy$=dx$+"weapons":xl$="listwep":xc=wc:xn$="WEAPONS":open #1,dy$
position #1,34,0
input #1,nw
weapons
wk=0
gosub edpmt
if i$="A" goto nw.wep
if (i$<>"E") and (i$<>"K") goto weapons
push weapons
gosub getnum:pop
if i$="E" goto ed.wep
kil.wep
gosub rd.wep:if cb$="*" print \"No weapon there":goto weapons
print \"Kill "xn$" # "x
print "Named "w$;:input @0 "? "i$
if i$<>"Y" goto weapons
if cb$="2" then nw=nw-1
cb$="*":gosub wr.wep:goto weapons
nw.wep
print \"Searching...."
x=1
nw.wep2
gosub rd.wep
if (cb$="") or (cb$="*") goto nw.wep3
x=x+1:if x=1000 print \"No room in "xn$" file.":goto weapons
goto nw.wep2
nw.wep3
print \"Open slot found at # "x:if x<=10 then cb$="2":else cb$="1"
gosub ed.w.nam:if w$="" goto weap.cnc
gosub ed.w.typ
gosub ed.w.stb
gosub ed.w.dam
gosub ed.w.cst
if x<=10 then wk=1
goto weap.sav
ed.wep
gosub rd.wep
if (cb$="") or (cb$="*") push weapons:goto ed.none
ed.wep2
print \"Weapon # "x
print "A: Name : "w$
print "B: Class : ";:if ty$="M" print "Magical":else ty$="S":print "Standard"
print "C: Stabilty : "s"0%"
print "D: Damage : "d"0%"
print "E: Cost : "v" gold"\
input @2\"Edit (A-E): "i$
ed.wep3
if i$="A" gosub ed.w.nam:if w$="" goto ed.wep3
if i$="B" gosub ed.w.typ
if i$="C" gosub ed.w.stb
if i$="D" gosub ed.w.dam
if i$="E" gosub ed.w.cst
if i$<>"" goto ed.wep2
weap.sav
input \"[S]ave [R]eturn [A]bort: "i$
if i$="A" goto weapons
if i$="R" goto ed.wep2
if i$<>"S" goto weap.sav
if x>wc then wc=x:xc=x
if wk=1 then nw=nw+1
gosub wr.wep:goto weapons
ed.w.nam
input @2\"Name (18 chrs.): "w$:if len(w$)>18 goto ed.w.nam
return
ed.w.typ
input @0\"Class: "ty$:if ty$="?" gosub w.types:goto ed.w.typ
a=instr(ty$,"MSC"):if (not a) print \"Invalid Class":goto ed.w.typ
if (ty$="C") and (x<11) print \"Weapons 1-10 can not be Cursed":goto ed.w.typ
return
ed.w.stb
input \"Stability (5-9): "s:if (s<5) or (s>9) goto ed.w.stb
return
ed.w.dam
input \"Damage (3-9): "d:if (d<3) or (d>9) goto ed.w.dam
return
ed.w.cst
input \"Cost (1-9999): "v:if (v<1) or (v>9999) goto ed.w.cst
return
weap.cnc
print \nx$" add cancelled.":goto weapons
w.types
print \'Valid Weapon Classes:
M = Magical S = Standard C = Cursed':return
rd.wep
position #1,34,x
input #1,cb$\w$\s,d,v
ty$=left$(w$,1):w$=mid$(w$,3)
return
wr.wep
zz$=rnd$:wa=random(9)
w$=ty$+"."+w$
position #1,34,x
print #1,cb$\w$\s,d,v\wa
return
allie0
dy$=dx$+"allies":xl$="listally":xc=ac:xn$="ALLIES":open #1,dy$
allies
gosub edpmt
if i$="A" goto nw.ally
if (i$<>"E") and (i$<>"K") goto allies
push allies
gosub getnum:pop
if i$="E" goto ed.ally
kl.ally
gosub rd.ally:if cb$="*" print \"No "xn$" found.":goto allies
print \"Kill "xn$" # "x
print "Named: "x1$;:input @0 "? "i$
if i$<>"Y" goto allies
cb$="*":gosub wr.ally:goto allies
nw.ally
print \"Searching..."
x=1
nw.ally2
gosub rd.ally
if (cb$="") or (cb$="*") goto nw.ally3
x=x+1:if x=1000 print \"No room in "xn$" file."goto allies
goto nw.ally2
nw.ally3
print \"Open slot found at #"x:cb$="1"
gosub ed.a.nam:if x1$="" goto ally.cnc
gosub ed.a.str
gosub ed.a.hit
goto ally.sav
ed.ally
gosub rd.ally
if (cb$="") or (cb$="*") push allies:goto ed.none
ed.ally2
print \"A: Ally Name : "x1$
print "B: Ally Strength: "x2
print "C: Ally Hit : "x3"0%
input @2\"Edit (A-C)? "i$
ed.ally3
if i$="A" gosub ed.a.nam:if x1$="" goto ed.ally3
if i$="B" gosub ed.a.str
if i$="C" gosub ed.a.hit
if i$<>"" goto ed.ally2
ally.sav
input \"[S]ave [A]bort or [R]eturn? "i$
if i$="A" goto allies
if i$="R" goto ed.ally2
if i$<>"S" goto ally.sav
if x>ac then ac=x:xc=x
gosub wr.ally:goto allies
ed.a.nam
input @2\"New Ally Name (18 chrs.): "x1$:if len(x1$)>18 goto ed.a.nam
return
ed.a.str
input \"Strength (1-20): "x2:if (x2<1) or (x2>20) goto ed.a.str
return
ed.a.hit
input \"Hit % (1-9): "x3:if (x3<1) or (x3>9) goto ed.a.hit
return
ally.cnc
print \xn$" add cancelled.":goto allies
rd.ally
position #1,26,x
input #1,cb$\x1$\x2,x3
return
wr.ally
position #1,26,x
print #1,cb$\x1$\x2,x3
return
room0
xl$="room0":gosub link.sys:goto main
levels
xl$="levels":gosub link.sys:goto main
edpmt
print \"[ "xn$" ]"
input \"[L]ist [E]dit [A]dd [K]ill or [Q]uit: "i$
if i$="L" close:gosub link.sys:i$="L":open #1,dy$
if i$<>"Q" return
if xn$="WEAPONS" position #1,34,0:print #1,nw
pop:close:return
getnum
print \xn$ ;:input @2 " #: "x$:x=val(x$):if x$="" pop:return
if (x<1) or (x>xc) print \xn$" from 1 to "xc" only.":pop:return
return
ed.none
print \"# "x" not defined.":return
prt.gold
a$=str$(g1):gd$="0000":if g1=0 then gd$=" ":a$=" "
gd$=right$(" "+a$,5)+right$(gd$+str$(g2),4)
return
spl.gold
gd$=right$("000000000"+gd$,9)
g1=val(left$(gd$,5)):g2=val(right$(gd$,4))
return
fre.ally
dy$=dx$+"allies":open #1,dy$
position #1,26,a
print #1,1:return
log
f$=dx$+"spur.log"
log2
print \"[S]how, [D]elete, [Q]uit:";
input " "i$
if i$="S" gosub show.file:goto log2
if i$="D" kill f$:return
if i$="Q" return
goto log2
show.file
setint(1):print \s$\:copy f$:setint(""):return
link.sys
f$=ds$+"spur.control":link f$,"list"
relink
return
quit
pop:dy$=dz$+"spur.logon"
dw$=dz$+"spur.shop"
if (not cr) link dw$:else link dy$,"login2"
linkterm
dy$=dz$+"spur.logon":link dy$,"quit3"